package com.moli.iov.base.remote;

import com.moli.iov.base.model.dto.req.QueryVehicleBaseListReqDto;
import com.moli.iov.base.model.dto.req.VehicleBaseAuthDto;
import com.moli.iov.base.model.dto.req.VehicleBaseReqDto;
import com.moli.iov.base.model.dto.req.VehicleGraphicsQueryListReqDto;
import com.moli.iov.base.model.dto.res.VehicleBaseResDto;
import com.moli.iov.base.model.po.VehicleBase;
import com.moli.iov.rest.RestResponse;
import java.util.List;
import java.util.Map;

/**
 * 车辆监控 > 车辆管理业务处理
 *
 * @author whl
 */
public interface IVehicleBaseRemoteService {


  RestResponse onlineRemind(String vin);

  /**
   * 添加车辆
   * @param vehicleBaseReqDto
   * @return
   */
  public RestResponse saveVehicleBase(VehicleBaseReqDto vehicleBaseReqDto);

  /**
   * 车辆是否存在
   *    *
   *    * @param vin 车架号
   * @param vin
   * @return
   */
  public VehicleBase getVehicleBaseByVin(String vin);

  /**
   * 修改车辆
   */
  public RestResponse updateVehicleBase(VehicleBaseReqDto vehicleBaseReqDto);

  /**
   * 得到所有车辆
   */
  public List<VehicleBase> listVehicleBase();

  /**
   * 根据公司id来VehicleBase 不走缓存
   */
  public List<VehicleBase> listVehicleBaseByCompanyId(Long companyId);

  RestResponse queryAttentionGroup(Long userId);

  RestResponse queryAttentionVehicleGraphics(VehicleGraphicsQueryListReqDto reqDto);

  /**
   * 车辆监控 > 车辆管理->图形列表查询实现
   */
  public RestResponse listVehicleGraphicsQueryListRes(VehicleGraphicsQueryListReqDto reqDto);


  RestResponse queryAttentionVehicleList(QueryVehicleBaseListReqDto reqDto);

  /**
   * 车辆监控 > 车辆管理->list
   */
  public RestResponse listVehicleQueryListRes(QueryVehicleBaseListReqDto reqDto);


  /**
   * 提供接口   下行服务 发送命令
   * @param vin
   * @return
   */
  public RestResponse<VehicleBaseResDto> getVehicleCompanyIdByVin(String vin);

  /**
   * 提供接口   Map<companyId,List<vin>>
   * @return
   */
  Map<Long, List<String>>  listVehicleBaseMap();

  /**
   *  提供 报警统计查询实时
   *
   * @param vinList
   * @return
   */
  RestResponse<Map<String,VehicleBase>> listVehicleBaseByVin(List<String> vinList);

  /**
   * 提供 his
   * @param vin
   * @return
   */
  RestResponse<String>queryLicenseByVin (String vin);
  /**
   * 提供 his
   * @param license
   * @return
   */
  RestResponse<String>queryVinByLicense (String license);

  /**
   * 得到vinlIst   首页   companyId null 为全部
   *
   * @param companyId
   * @return
   */
  RestResponse<List<String>> listVinByCompanyId(Long companyId);


  /**
   *   车辆授权或者取消授权
   *
   * @param authDto
   * @return
   */
  RestResponse vehicleBaseIsAuthorized(VehicleBaseAuthDto authDto);
  /**
   * 提供 his
   * @param license
   * @return
   */
  RestResponse<VehicleBase>queryVehicleBaseByLicense (String license);

}
